/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
// 异或，改变异或运算的任何一个属，都会导致对应的结果反转
// 所以本道题只要求最后的异或和与k再异或出来的结果1的个数，因为1的个数代表异或和与k的差异
var minOperations = function(nums, k) {
    for(let n of nums) {
        k ^= n
    }
    let res = 0, s = k.toString(2)
    for(let i = 0; i < s.length; i++) {
        if(s.charAt(i) === '1') res++
    }
    return res
};
console.log(minOperations([2, 1, 3, 4], 1));